package com.wanjl.spring_05_mybatis_spring.common.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

/**
 * @author WanJl
 * @version 1.0
 * @title JdbcConfig
 * @description
 * @create 2024/11/1
 */
/*
    这个类是spring封装jdbc，用来连接MySQL数据库的核心配置类
    我们通过@Value向配置参数中注入jdbc.properties属性文件中的属性值
    然后我们通过Druid提供的DruidDataSource数据源将参数放到DataSource对象中
    并且通过@Bean注解将数据源对象注入到IOC容器中。
    等到spring整合mybatis的时候，可以为mybatis提供数据源信息。
    通过数据源信息创建SQLSession对象
 */
public class JdbcConfig {
    @Value("${mysql.jdbc.driver}")
    private String driver;

    @Value("${mysql.jdbc.url}")
    private String url;

    @Value("${mysql.jdbc.username}")
    private String username;

    @Value("${mysql.jdbc.password}")
    private String password;

    /**
     * 将配置好的DruidDataSource作为Bean放入IOC容器中
     * @return
     */
    @Bean
    public DataSource getDataSource() {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }
}
